package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.req.so.SoCargoUpdateReqDto;
import com.cmc.cloud.cmclink.doc.entity.SoCargoDO;
import com.cmc.cloud.cmclink.doc.mq.SoEdiReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.socargovo.SoCargoCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.socargovo.SoCargoRespVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.socargovo.SoCargoUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 订舱货物信息 Convert
 *
 * @author 招商轮船-管理员
 */
@Mapper
public interface SoCargoConvert {

    SoCargoConvert INSTANCE = Mappers.getMapper(SoCargoConvert.class);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SoCargoDO
     */
    SoCargoDO convert(SoCargoCreateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SoCargoDO
     */
    List<SoCargoDO> convertBatchUpdate(List<SoCargoUpdateReqVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return
     */
    List<SoCargoDO> convertBatch(List<SoCargoCreateReqVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SoCargoDO
     */
    SoCargoDO convert(SoCargoUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return SoCargoRespVO
     */
    SoCargoRespVO convert(SoCargoDO bean);

    /**
     * 属性转换 convert
     *
     * @param list bean
     * @return SoCargoRespVO
     */
    List<SoCargoRespVO> convertList(List<SoCargoDO> list);

    /**
     * 属性转换 convert
     *
     * @param list bean
     * @return SoCargoCreateReqVO
     */
    List<SoCargoCreateReqVO> convertCreateList(List<SoCargoDO> list);

    /**
     * 属性转换
     *
     * @param soCargoUpdateReqDtoList bean
     * @return List<SoCargoUpdateReqVO>
     */
    List<SoCargoUpdateReqVO> convertSoCargoUpdateReqDto(List<SoCargoUpdateReqDto> soCargoUpdateReqDtoList);
    /**
     * 属性转换
     *
     * @param cargoList list
     * @return List<SoCargoUpdateReqVO>
     */
    List<SoCargoUpdateReqVO> ediConvertSoCargoUpdateReqDto(List<SoEdiReqVO.Cargo> cargoList);

    /**
     * 属性转换 convert
     *
     * @param list bean
     * @return SoCargoDO
     */
    List<SoCargoDO> convertDoList(List<SoCargoRespVO> list);


    /**
     * 属性转换
     *
     * @param soCargoDoList bean
     * @return SoCargoUpdateReqDto
     */
    List<SoCargoUpdateReqDto> convertSoCargoUpdateReqDtos(List<SoCargoDO> soCargoDoList);

}
